import VwButton from './button/index.js'
import VwRow from './row/index.js'
import VwCol from './col/index.js'
import VwContainer from './container/index.js'
import VwAside from './aside/index.js'
import VwFooter from './footer/index.js'
import VwHeader from './header/index.js'
import VwMain from './main/index.js'
import VwInput from './input/index.js'
import Message from './message/index.js'
// 所有组件列表
const components = [
  VwButton,
  VwRow,
  VwCol,
  VwContainer,
  VwAside,
  VwFooter,
  VwHeader,
  VwMain,
  VwInput,
  Message
]
// 定义 install 方法，接收 Vue 作为参数
const install = function(Vue) {
  // 判断是否安装，安装过就不继续往下执行
  if (install.installed) return
  install.installed = true
  // 遍历注册所有组件
  components.forEach(component => Vue.component(component.name, component))
  // 下面这个写法也可以
  // components.map(component => Vue.use(component))

  // 将方法放到Vue原型上
  Vue.prototype.$message = Message
}

// 检测到 Vue 才执行，毕竟我们是基于 Vue 的
if (typeof window !== 'undefined' && window.Vue) {
  install(window.Vue)
}

export default {
  install,
  // 所有组件，必须具有 install，才能使用 Vue.use()
  ...components
}
